import { fetchLogin, fetchUserInfo } from "@/api/user.js"

// action creator action生成器
// 调用switchSize函数，得到一个对象，这个对象就是action
export function switchSize(size) {
  return { type: "APP_SIZE", payload: size }
}

export function switchLang(lang) {
  return { type: "APP_LANG", payload: lang }
}

export function switchColor(color) {
  // 同步的action creator是返回的一个对象
  return { type: "APP_COLOR", payload: color }
}

// 写一个异步的action creater
export function login(data) {
  // 异步的action creator是返回的一个函数
  return function (dispatch) {
    // dispatch 目的是用于派发一个同步的aciton
    // 在这里，谅可以写异步代码了
    fetchLogin(data).then(({ token }) => {
      if (token) {
        localStorage.setItem("token", token)
        // 需要派发一个同步的action，把token存储到redux中
        dispatch({ type: "USER_LOGIN", payload: token })
      }
    })
  }
}

export function getInfo() {
  return function (dispatch) {
    fetchUserInfo().then(res => {
      // console.log("用户信息：", res);
      if (res && res.roles) {
        dispatch({ type: "USER_INFO", payload: res })
      }
    })
  }
}

export function resetUser() {
  return { type: "USER_RESET", payload: null }
}